`
https://leetcode.cn/problems/minimum-size-subarray-sum/
`

/**
 * @param {number} target
 * @param {number[]} nums
 * @return {number}
 */
var minSubArrayLen = function (target, nums) {
  // 当前滑动窗口内所有数字的总和
  let currentSum = 0
  // 最小长度
  let resLen = Infinity
  // 窗口边框
  let left = 0, right = 0

  // 窗口右边框碰到边界时停止
  while (right < nums.length) {
    // 获取新加入窗口的数字
    const n = nums[right]
    right++

    // 更新窗口内所有数字的总和
    currentSum += n

    // 当总和大于等于目标值时，开始缩小窗口
    while (currentSum >= target) {
      // 如果当前窗口长度比之前的最小长度小，则更新最小长度
      if (right - left <= resLen) {
        resLen = right - left
      }
      // 获取移出窗口的数字
      const m = nums[left]
      left++

      // 更新窗口内所有数字的总和
      currentSum -= m
    }
  }

  // 如果最小长度没有被更新过，则返回 0
  // 否则返回最小长度
  return resLen === Infinity ? 0 : resLen
};